home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_13_10
/
kientzle
/
smscale.c
< prev
Wrap
Text File
|
1995-08-14
|
670b
|
31 lines
Listing 3
void scale_smooth
(PIXEL *src, int srcWidth,
PIXEL *dest, int destWidth)
{
int pixelFrac=destWidth;
int srcPos=0, destPos=0;
while(destPos < destWidth) {
PIXEL p = 0;
int numerator = 0;
/* Handle whole pixels first */
while (numerator+pixelFrac
<= srcWidth) {
numerator += pixelFrac;
p += pixelFrac*src[srcPos++];
pixelFrac = destWidth;
}
if (numerator < srcWidth)
{ /* Partial pixel? */
p += (srcWidth-numerator)
* src[srcPos];
pixelFrac -= srcWidth
- numerator;
}
dest[destPos++]= p / srcWidth;
}
}